fix for #50317
authorHavoc Pennington <hp@redhat.com>
Tue, 25 Sep 2001 23:35:06 +0000 (23:35 +0000)
committerHavoc Pennington <hp@src.gnome.org>
Tue, 25 Sep 2001 23:35:06 +0000 (23:35 +0000)
2001-09-25  Havoc Pennington  <hp@redhat.com>

* gtk/gtktextview.c: fix for #50317

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktextiter.c
gtk/gtktextview.c
gtk/gtktextview.h

index 694d0d53af5491783e5d7eb3d6db2b7a5d153d50..6178bf71efb8fd101ff8a4bb9847b6fbed801474 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,12 @@
+2001-09-25  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c: fix for #50317
+       
 2001-09-25  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_key_press_event): use 
        gtk_text_iter_can_insert
-
+       
        * gtk/gtktextbuffer.c: use gtk_text_iter_can_insert
 
        * gtk/gtktextiter.c (find_line_log_attrs): fixes, #57611, #57613
index 694d0d53af5491783e5d7eb3d6db2b7a5d153d50..6178bf71efb8fd101ff8a4bb9847b6fbed801474 100644 (file)
@@ -1,8 +1,12 @@
+2001-09-25  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c: fix for #50317
+       
 2001-09-25  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_key_press_event): use 
        gtk_text_iter_can_insert
-
+       
        * gtk/gtktextbuffer.c: use gtk_text_iter_can_insert
 
        * gtk/gtktextiter.c (find_line_log_attrs): fixes, #57611, #57613
index 694d0d53af5491783e5d7eb3d6db2b7a5d153d50..6178bf71efb8fd101ff8a4bb9847b6fbed801474 100644 (file)
@@ -1,8 +1,12 @@
+2001-09-25  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c: fix for #50317
+       
 2001-09-25  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_key_press_event): use 
        gtk_text_iter_can_insert
-
+       
        * gtk/gtktextbuffer.c: use gtk_text_iter_can_insert
 
        * gtk/gtktextiter.c (find_line_log_attrs): fixes, #57611, #57613
index 694d0d53af5491783e5d7eb3d6db2b7a5d153d50..6178bf71efb8fd101ff8a4bb9847b6fbed801474 100644 (file)
@@ -1,8 +1,12 @@
+2001-09-25  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c: fix for #50317
+       
 2001-09-25  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_key_press_event): use 
        gtk_text_iter_can_insert
-
+       
        * gtk/gtktextbuffer.c: use gtk_text_iter_can_insert
 
        * gtk/gtktextiter.c (find_line_log_attrs): fixes, #57611, #57613
index 694d0d53af5491783e5d7eb3d6db2b7a5d153d50..6178bf71efb8fd101ff8a4bb9847b6fbed801474 100644 (file)
@@ -1,8 +1,12 @@
+2001-09-25  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c: fix for #50317
+       
 2001-09-25  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_key_press_event): use 
        gtk_text_iter_can_insert
-
+       
        * gtk/gtktextbuffer.c: use gtk_text_iter_can_insert
 
        * gtk/gtktextiter.c (find_line_log_attrs): fixes, #57611, #57613
index 694d0d53af5491783e5d7eb3d6db2b7a5d153d50..6178bf71efb8fd101ff8a4bb9847b6fbed801474 100644 (file)
@@ -1,8 +1,12 @@
+2001-09-25  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c: fix for #50317
+       
 2001-09-25  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_key_press_event): use 
        gtk_text_iter_can_insert
-
+       
        * gtk/gtktextbuffer.c: use gtk_text_iter_can_insert
 
        * gtk/gtktextiter.c (find_line_log_attrs): fixes, #57611, #57613
index 694d0d53af5491783e5d7eb3d6db2b7a5d153d50..6178bf71efb8fd101ff8a4bb9847b6fbed801474 100644 (file)
@@ -1,8 +1,12 @@
+2001-09-25  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextview.c: fix for #50317
+       
 2001-09-25  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtktextview.c (gtk_text_view_key_press_event): use 
        gtk_text_iter_can_insert
-
+       
        * gtk/gtktextbuffer.c: use gtk_text_iter_can_insert
 
        * gtk/gtktextiter.c (find_line_log_attrs): fixes, #57611, #57613
index 3e24beb385e1f7ab37fcc988978fc0e44ddb681f..a3245437c9b00c178d83800b6006368c442c66af 100644 (file)
@@ -2003,6 +2003,8 @@ _gtk_text_iter_forward_indexable_segment (GtkTextIter *iter)
         {
           /* End of buffer */
 
+          g_assert (!_gtk_text_line_is_last (real->line, real->tree));
+          g_assert (_gtk_text_line_contains_end_iter (real->line, real->tree));
           g_assert (gtk_text_iter_is_end (iter));
           
           check_invariants (iter);
index 75df338719e5c3f3eacd8d2975422178799f6e26..ed38d1c9c79088188be42d4e95bbbdab494bf0c0 100644 (file)
@@ -980,6 +980,8 @@ gtk_text_view_init (GtkTextView *text_view)
 
   text_view->drag_start_x = -1;
   text_view->drag_start_y = -1;
+
+  text_view->pending_place_cursor_button = 0;
 }
 
 /**
@@ -3346,6 +3348,7 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
             {
               text_view->drag_start_x = event->x;
               text_view->drag_start_y = event->y;
+              text_view->pending_place_cursor_button = event->button;
             }
           else
             {
@@ -3465,12 +3468,13 @@ gtk_text_view_button_release_event (GtkWidget *widget, GdkEventButton *event)
           text_view->just_selected_element = FALSE;
           return FALSE;
         }
-      else
+      else if (text_view->pending_place_cursor_button == event->button)
         {
          GtkTextIter iter;
 
-          /* Unselect everything; probably we were dragging, or clicked
-           * without dragging to remove selection.
+          /* Unselect everything; we clicked inside selection, but
+           * didn't move by the drag threshold, so just clear selection
+           * and place cursor.
            */
          gtk_text_layout_get_iter_at_pixel (text_view->layout,
                                             &iter,
@@ -3478,7 +3482,9 @@ gtk_text_view_button_release_event (GtkWidget *widget, GdkEventButton *event)
                                             event->y + text_view->yoffset);
 
          gtk_text_buffer_place_cursor (get_buffer (text_view), &iter);
-  
+
+          text_view->pending_place_cursor_button = 0;
+          
           return FALSE;
         }
     }
@@ -4680,7 +4686,8 @@ gtk_text_view_start_selection_dnd (GtkTextView       *text_view,
 
   text_view->drag_start_x = -1;
   text_view->drag_start_y = -1;
-
+  text_view->pending_place_cursor_button = 0;
+  
   target_list = gtk_target_list_new (target_table,
                                      G_N_ELEMENTS (target_table));
 
index b4c775daa9b469d3df6badf8dbded2b3ac002de2..430c53a9e436f4d4c1406ba6a2d55b8699968a35 100644 (file)
@@ -143,6 +143,8 @@ struct _GtkTextView
 
   GtkTextPendingScroll *pending_scroll;
   GdkGC *cursor_gc;
+
+  gint pending_place_cursor_button;
 };
 
 struct _GtkTextViewClass